﻿using System;
using Ent.Inscripcion.Presentacion.ServicioSyllabusResec;
using Ext.Net;
using Ent.Inscripcion.Core.Core;
using Ent.Inscripcion.Core.Administracion;
using Ent.Inscripcion.Core;
using System.Configuration;

namespace Ent.Inscripcion.Presentacion
{
    public partial class wucVerificaPago : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                bool ban;
                bool.TryParse(ConfigurationManager.AppSettings.Get("ModoTest"),out ban);
                txtIdentificacion.Disabled = !ban;
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex);
            }
        }
        /// <summary>
        /// Permite verfiricar el pago
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnVerificar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                // Valor de Tipo
                // 2 Examen 
                // 1 Tutoria 
                var codExamen = ConfigurationManager.AppSettings.Get("CodExamen");
                var tipo = e.ExtraParams["Tipo"];
                var confVerificar = ConfigurationManager.AppSettings.Get("ValidarFecha");
                var confFecha = ConfigurationManager.AppSettings.Get("Fecha");
                DateTime fechaComparar;
                DateTime.TryParse(confFecha, out fechaComparar);
                var identificacion = e.ExtraParams["Identificacion"];
                var codigoItemFacturado = e.ExtraParams["CodigoItemFacturado"];
                var fechaPago = e.ExtraParams["FechaFactura"];
                DateTime fecha;
                DateTime.TryParse(fechaPago,out fecha);
                var permitido=true;
                if (confVerificar == "1" && fechaComparar > fecha)
                {
                    e.ExtraParamsResponse["Resultado"] = "3";
                    permitido = false;
                }
                if(permitido)
                {
                    var numeroFactura = e.ExtraParams["NumeroFactura"];
                    var criterio = VerificaPagoCriterio.NewVerificaPagoCriterio();
                    criterio.Identificacion = identificacion;
                    criterio.Fecha = string.Format("{0}/{1}/{2}", fecha.Day, fecha.Month, fecha.Year);
                    criterio.Item = codigoItemFacturado.ToUpper();
                    criterio.NumeroFactura = numeroFactura;
                    var verificarFactura = VerificarPagoFacturaCmd.Execute(criterio);
                    e.ExtraParamsResponse["Resultado"] = verificarFactura.Result ? "0" : "1";
                    //Aqui llamar al servicio que verifique los pagos

                    if (verificarFactura.Result)
                    {
                        // Valor de Tipo
                        // 2 Examen 
                        // 1 Tutoria 
                        if(tipo == "1" && codigoItemFacturado == codExamen)
                            e.ExtraParamsResponse["Resultado"] = "4";
                        else
                        {
                            var servicio = new ServiceResec();
                            var respuesta = servicio.VerificarPago(identificacion, codigoItemFacturado, criterio.Fecha);
                            //var respuesta = 1;
                            if (respuesta == 1)
                            {
                                e.ExtraParamsResponse["Resultado"] = "2";
                                var infoFactura = new InfoFactura()
                                                      {
                                                          Fecha = string.Format("{0}/{1}/{2}", fecha.Day, fecha.Month, fecha.Year),
                                                          Identificacion = identificacion,
                                                          Item = codigoItemFacturado,
                                                          NumeroFactura = numeroFactura
                                                      };
                                Session["InfoFactura"] = infoFactura;
                            }
                            else
                                e.ExtraParamsResponse["Resultado"] = "0";
                        }
                    }
                    e.Success = true;
                }
            }
            catch (Exception ex)
            {
                
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }
        /// <summary>
        /// Permite mostrar la información
        /// </summary>
        /// <param name="tipo"></param>
        internal void Mostrar(int tipo)
        {
            // Valor de Tipo
            // 2 Examen 
            // 1 Tutoria 
            hidTipo.Text = tipo.ToString();
            var estudiante = Session["Estudiante"] as Estudiante;
            txtIdentificacion.Text = estudiante.Identificacion;
            winVerificarPago.Show();
        }
    }
    public class InfoFactura
    {
        public string NumeroFactura { get; set; }
        public string Item { get; set; }
        public string Fecha { get; set; }
        public string Identificacion { get; set; }
    }
}